//
//  JWKTabBarItem.swift
//  Weibo
//
//  Created by 姜维克 on 16/5/28.
//  Copyright © 2016年 姜维克. All rights reserved.
//  自定义UITabBarItem,来保证自动修改提醒数字后的背景图

import UIKit

class JWKTabBarItem: UITabBarItem {
    
    //重写属性badgeValue 每当修改自定义控件的该属性都会自动调用修改背景图的方法
     override var badgeValue: String?{
        didSet{
            
            changeBadgeBackgroundImage()
        }
    }
    
    
    //修改提醒数字后面的背景图
    private func changeBadgeBackgroundImage(){
        //利用KVC来获取value tabbarItem中有一个键值对, _target:
        //            <Weibo.JWKMainViewController: 0x7f9218fa7f00>
        let tabBarController = valueForKey("_target") as! JWKMainViewController
        
        for subview in tabBarController.tabBar.subviews{
            //遍历消息tableviewcontroller的标签控制器中的tabbar的子控件数组
            if subview.isKindOfClass(NSClassFromString("UITabBarButton")!){
                
                for bgView in subview.subviews{
                    
                    if bgView.isKindOfClass(NSClassFromString("_UIBadgeView")!){
                        //_UIBadgeBackground
                        
                        for item in bgView.subviews{
                            if item.isKindOfClass(NSClassFromString("_UIBadgeBackground")!) {
        
                                //设置图片---不知道key是什么?!!通过渲染找到视图的层级,在通过判断进入最后一层的视图,打断点得到里面的属性_image
                                let image = UIImage(named: "main_badge")
                                //                                MARK:通过KVC修改属性的值
                                item.setValue(image, forKey: "_image")
                                return
                            }
                        }
                    }
                }
            }
        }
    }
}
